// utils/qiniuUpload.js
import request from './request'

// 获取七牛上传token
export function getQiniuToken() {
  return request({
    url: 'qiniu/token',
    method: 'GET',
  })
}

// 根据 route 获取文件名
export function getFileName(route) {
  return request({
    url: 'file-name',
    method: 'GET',
    data: { route }
  })
}

/**
 * 上传单个文件到七牛
 * @param {string} filePath - 本地文件路径
 * @param {string} route - 文件路径路由
 * @returns {Promise} - 返回上传结果
 */
export async function uploadFileToQiniu(filePath, route) {
  const tokenRes = await getQiniuToken()
  const uploadToken = tokenRes.data.uploadToken

  const fileNameRes = await getFileName(route)
  const fileName = fileNameRes.data
	// 获取本地文件后缀
	const ext = getFileExtension(filePath);

	// 拼接完整文件名
	const fullFileName = fileName + ext;


  return new Promise((resolve, reject) => {
    wx.uploadFile({
      url: 'https://up-z2.qiniup.com',
      filePath,
      name: 'file',
      formData: {
        token: uploadToken,
        key: fullFileName
      },
      success(res) {
        if (res.statusCode === 200) {
          resolve(JSON.parse(res.data))
        } else {
          reject(new Error('上传失败，状态码：' + res.statusCode))
        }
      },
      fail(err) {
        reject(err)
      }
    })
  })
}

function getFileExtension(filePath) {
  const match = filePath.match(/\.(\w+)$/);
  return match ? '.' + match[1] : '';
}

